modwire 9.3.0__tar.gz → 10.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-9.3.0 → modwire-10.0.0}/.dev/modwire.egg-info/SOURCES.txt +2 -0
- {modwire-9.3.0 → modwire-10.0.0}/PKG-INFO +9 -1
- {modwire-9.3.0 → modwire-10.0.0}/README.md +8 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/application.py +6 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/dependency/services/graph_builder.py +1 -1
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/php/script.php +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/php/script.src.php +88 -8
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/typescript/script.js +58 -11
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/typescript/script.ts +61 -11
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/services/php_extractor.py +9 -3
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/services/python_extractor.py +6 -3
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/services/python_syntax_parser.py +93 -12
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/services/type_script_extractor.py +9 -3
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/models/implementation_manifest.py +3 -3
- modwire-10.0.0/src/modwire/implementation/manifest/models/manifest_attribute.py +24 -0
- modwire-10.0.0/src/modwire/implementation/manifest/models/manifest_dependency.py +21 -0
- modwire-10.0.0/src/modwire/implementation/manifest/models/manifest_inheritance.py +19 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/services/code_map_manifest_compiler.py +88 -9
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/code_map.py +1 -1
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/dependency_graph.py +5 -6
- modwire-10.0.0/src/modwire/shared/code/models/edge.py +23 -0
- modwire-10.0.0/src/modwire/shared/code/models/source_class_property.py +11 -0
- modwire-10.0.0/src/modwire/shared/code/models/source_inheritance.py +19 -0
- modwire-10.0.0/src/modwire/shared/code/models/source_member_kind.py +8 -0
- modwire-10.0.0/src/modwire/shared/code/models/source_relation_kind.py +9 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_symbol.py +1 -0
- modwire-10.0.0/tests/application/test_08_implementation_manifest.py +279 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/dependency/test_02_invariants.py +5 -5
- {modwire-9.3.0 → modwire-10.0.0}/tests/shared/code/test_02_invariants.py +1 -1
- {modwire-9.3.0 → modwire-10.0.0}/tests/support/code_map.py +12 -2
- modwire-9.3.0/src/modwire/implementation/manifest/models/manifest_attribute.py +0 -8
- modwire-9.3.0/src/modwire/implementation/manifest/models/manifest_dependency.py +0 -12
- modwire-9.3.0/src/modwire/implementation/manifest/models/manifest_inheritance.py +0 -8
- modwire-9.3.0/src/modwire/shared/code/models/edge.py +0 -14
- modwire-9.3.0/src/modwire/shared/code/models/source_class_property.py +0 -6
- modwire-9.3.0/src/modwire/shared/code/models/source_inheritance.py +0 -10
- modwire-9.3.0/tests/application/test_08_implementation_manifest.py +0 -114
- {modwire-9.3.0 → modwire-10.0.0}/.github/workflows/ci.yml +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/.github/workflows/release.yml +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/.gitignore +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/AGENTS.md +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/LICENSE +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/MANIFEST.in +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/Makefile +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/docs/target-language-ownership.md +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/pyproject.toml +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/scripts/check_extractors.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/scripts/generate_docs.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/scripts/verify_consumer.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/setup.cfg +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/setup.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/__main__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/boundaries/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/boundaries/application.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/boundaries/domain.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/boundaries/models/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/boundaries/models/edge_rule_violation.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/boundaries/models/flow_report.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/boundaries/models/flow_violation.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/boundaries/models/types.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/boundaries/services/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/boundaries/services/backward_flow_analyzer.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/boundaries/services/boundaries_flow_analyzer.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/boundaries/services/module_boundary_analyzer.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/boundaries/services/no_cycles_flow_analyzer.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/boundaries/services/no_reentry_flow_analyzer.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/config/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/config/application.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/config/models/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/config/models/architecture_config.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/config/models/boundaries_config.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/config/models/boundary_rule.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/config/models/configuration_value.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/config/models/flow_realm.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/config/models/flow_rules.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/config/models/shape_config.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/config/models/shape_realm.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/config/models/shape_rules.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/config/models/tag_rule.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/facade.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/application.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/domain.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/models/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/models/callable_report_entry.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/models/callables_report.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/models/clusters_report.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/models/clusters_report_item.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/models/coherence_report.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/models/exports_report.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/models/exports_report_item.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/models/hotspots_report.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/models/hotspots_report_item.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/models/insight_report.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/services/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/services/callables_reporter.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/services/clusters_reporter.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/services/coherence_reporter.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/services/exports_reporter.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/services/hotspots_reporter.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/insights/services/insight_report_field_map.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/map/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/map/application.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/map/domain.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/map/models/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/map/models/architecture_map.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/map/models/architecture_realm.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/map/models/tag_map.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/map/models/tag_match.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/map/services/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/map/services/architecture_map_loader.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/map/services/tag_matcher.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/report/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/report/application.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/report/domain.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/report/models/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/report/models/architecture_group.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/report/models/map_report.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/report/models/report_catalog.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/report/models/report_descriptor.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/report/models/report_item.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/report/models/report_metadata.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/report/models/report_node.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/report/models/report_section.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/report/services/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/report/services/map_report_collector.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/shape/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/shape/application.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/shape/domain.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/shape/models/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/shape/models/shape_realm_architecture_map.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/shape/models/shape_report.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/shape/models/shape_violation.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/shape/services/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/shape/services/abstract_class_resolver.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/shape/services/callable_resolver.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/shape/services/class_resolver.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/shape/services/file_resolver.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/shape/services/import_resolver.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/shape/services/property_resolver.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/shape/services/signature_resolver.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/architecture/shape/services/symbol_resolver.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/autowiring.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/application.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/domain.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/models/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/models/cache_entry.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/models/cache_key.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/models/cache_kind.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/models/cache_options.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/models/cache_outcome.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/models/cache_plan.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/models/cache_stage.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/models/cache_storage_state.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/models/cached_result.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/models/source_cache_entry.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/services/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/services/cache_codec.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/services/cache_identity.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/cache/services/filesystem_cache_storage.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/documentation/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/documentation/application.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/documentation/services/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/documentation/services/documentation_generator.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/facade.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/initialization/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/initialization/application.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/initialization/models/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/initialization/models/initialization_result.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/initialization/services/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/initialization/services/initialization_service.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/application.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/domain.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/models/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/models/command_request.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/models/extractor_batch_input.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/models/extractor_command_input.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/models/extractor_source_input.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/models/report_pipeline_context.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/models/source_entry.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/models/source_inventory.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/services/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/services/batch_source_reader.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/services/callables_insight.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/services/clusters_insight.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/services/coherence_insight.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/services/command_line.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/services/configuration_loader.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/services/extractor_command.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/services/flow_violations.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/services/hotspots_insight.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/services/map_tree.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/services/output_console.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/services/shape_violations.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/services/source_manifest_builder.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/services/success.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/services/unknown_files_warning.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/pipeline/services/unused_exports_insight.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/resources/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/resources/application.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/resources/models/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/resources/models/defaults.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/resources/models/init_asset.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/resources/templates/AGENTS.md +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/resources/templates/ARCHITECTURE.md +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/resources/templates/INDEX.md +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/resources/templates/MODWIRE.md +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/resources/templates/RULES.md +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/resources/templates/TESTING.md +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/resources/templates/WORKFLOW.md +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/cli/resources/templates/architecture.yaml +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/dependency/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/dependency/application.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/dependency/domain.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/dependency/services/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/dependency/services/import_identity_index.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/dependency/services/import_resolver.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/application.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/domain.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/models/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/models/batch_config.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/models/extraction_request.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/models/extractor_resource.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/models/extractor_resource_set.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/models/extractor_runtime.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/models/python_call_context.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/php/build.php +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/php/build.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/php/composer.json +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/php/composer.lock +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/python/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/python/script.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/typescript/build.mjs +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/typescript/build.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/typescript/package-lock.json +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/typescript/package.json +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/typescript/tsconfig.json +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/services/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/services/python_call_reader.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/facade.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/facade.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/application.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/contracts/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/contracts/manifest_compiler.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/contracts/manifest_serializer.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/models/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/models/digest_algorithm.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/models/implementation_manifest_document.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/models/manifest_annotation.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/models/manifest_callable.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/models/manifest_format.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/models/manifest_parameter.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/models/manifest_span.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/models/manifest_symbol.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/services/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/implementation/manifest/services/canonical_json_manifest_serializer.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/py.typed +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/application.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/domain.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/capability_coverage.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/capability_status.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/code_map_producer.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/code_package.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/declaration_family.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/declaration_identity.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/dependency_edge_result.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/dependency_node_result.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/duplicate_identity_error.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/edge_resolution.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/extractor_descriptor.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/fact_capability.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/identity.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/node.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/query_builder.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/query_types.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/queryable_code_map.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/runtime_observation.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/scan_policy.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_abstract_class.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_artifact.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_call.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_callable.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_callable_symbol.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_class.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_class_method.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_export.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_extraction.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_file.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_file_result.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_function.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_import.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_imported_symbol.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_interface.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_item_result.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_manifest.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_parameter.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_signature.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_type.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_value.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/source_value_scope.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/models/types.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/services/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/services/glob_path_matcher.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/services/identity_resolver.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/code/services/installed_package_version.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/values/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/values/models/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/src/modwire/shared/values/models/value_model.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/application/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/application/base_test.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/application/test_01_attacks.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/application/test_06_happy_path.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/application/test_07_cache.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/base_test.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/boundaries/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/boundaries/base_test.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/boundaries/test_01_attacks.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/boundaries/test_02_invariants.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/boundaries/test_03_public_api.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/boundaries/test_04_paths.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/config/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/config/test_01_attacks.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/config/test_02_invariants.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/insights/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/insights/base_test.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/insights/test_02_invariants.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/map/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/map/test_02_patterns.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/report/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/report/test_02_invariants.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/report_benchmark/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/report_benchmark/benchmark_process_timeout.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/report_benchmark/run.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/shape/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/shape/base_test.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/shape/test_01_limits.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/architecture/shape/test_02_invariants.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/base_test.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/documentation/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/documentation/test_02_invariants.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/initialization/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/initialization/test_01_attacks.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/initialization/test_02_invariants.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/initialization/test_03_interruption.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/initialization/test_04_cleanup.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/initialization/test_05_recovery.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/pipeline/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/pipeline/base_test.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/pipeline/test_01_attacks.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/pipeline/test_02_invariants.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/pipeline/test_03_interruption.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/pipeline/test_04_command_transport.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/pipeline/test_05_recovery.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/cli/pipeline/test_06_happy_path.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/conftest.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/base_test.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/big_projects/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/big_projects/project.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/big_projects/projects.json +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/big_projects/resolution_results.json +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/big_projects/results.json +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/big_projects/run.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/cache_benchmark/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/cache_benchmark/benchmark_process_timeout.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/cache_benchmark/run.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/dependency/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/extractors/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/extractors/test_01_attacks.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/extractors/test_02_invariants.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/extractors/test_03_native_symbols.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/scan_benchmark/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/scan_benchmark/prepare.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/scan_benchmark/results.json +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/extraction/scan_benchmark/run.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/php/ignored/example_generated.php +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/php/src/example_application/example_actions/example_action.php +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/php/src/example_domain/example_model/example_record.php +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/php/src/example_domain/example_services/example_policy.php +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/php/src/example_interfaces/example_http/example_controller.php +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/python/ignored/example_generated.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/python/src/example_application/example_actions/example_action.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/python/src/example_domain/example_model/example_record.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/python/src/example_domain/example_services/example_policy.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/python/src/example_interfaces/example_http/example_controller.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/typescript/ignored/example_generated.ts +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/typescript/src/example_application/example_actions/example_action.ts +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_model/example_record.ts +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_model/example_view.tsx +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_audit.js +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_callables.ts +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_policy.ts +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/typescript/src/example_interfaces/example_http/example_controller.ts +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/languages/typescript/src/example_interfaces/example_http/example_view.jsx +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/syntax/php/example_shapes.php +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/syntax/python/example_shapes.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/fixtures/syntax/typescript/example_shapes.ts +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/shared/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/shared/code/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/support/__init__.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/support/base_test.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/tests/support/service_test.py +0 -0
- {modwire-9.3.0 → modwire-10.0.0}/uv.lock +0 -0
|
@@ -291,7 +291,9 @@ src/modwire/shared/code/models/source_inheritance.py
|
|
|
291
291
|
src/modwire/shared/code/models/source_interface.py
|
|
292
292
|
src/modwire/shared/code/models/source_item_result.py
|
|
293
293
|
src/modwire/shared/code/models/source_manifest.py
|
|
294
|
+
src/modwire/shared/code/models/source_member_kind.py
|
|
294
295
|
src/modwire/shared/code/models/source_parameter.py
|
|
296
|
+
src/modwire/shared/code/models/source_relation_kind.py
|
|
295
297
|
src/modwire/shared/code/models/source_signature.py
|
|
296
298
|
src/modwire/shared/code/models/source_symbol.py
|
|
297
299
|
src/modwire/shared/code/models/source_type.py
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: modwire
|
|
3
|
-
Version:
|
|
3
|
+
Version: 10.0.0
|
|
4
4
|
Summary: Code extraction, architecture analysis and the Modwire CLI.
|
|
5
5
|
Author: Tomasz Szpak
|
|
6
6
|
License-Expression: MIT
|
|
@@ -154,6 +154,14 @@ Generic persistent-cache settings supplied by a caller.
|
|
|
154
154
|
|
|
155
155
|
Caller-owned filesystem traversal policy with explicit exclusions and opt-in symlink following.
|
|
156
156
|
|
|
157
|
+
## `SourceMemberKind`
|
|
158
|
+
|
|
159
|
+
Ownership kind for a declared class or type member.
|
|
160
|
+
|
|
161
|
+
## `SourceRelationKind`
|
|
162
|
+
|
|
163
|
+
Canonical relation kinds published by code maps and implementation manifests.
|
|
164
|
+
|
|
157
165
|
## `ImplementationManifest`
|
|
158
166
|
|
|
159
167
|
A versioned, language-neutral statement of observed implementation facts and provenance.
|
|
@@ -126,6 +126,14 @@ Generic persistent-cache settings supplied by a caller.
|
|
|
126
126
|
|
|
127
127
|
Caller-owned filesystem traversal policy with explicit exclusions and opt-in symlink following.
|
|
128
128
|
|
|
129
|
+
## `SourceMemberKind`
|
|
130
|
+
|
|
131
|
+
Ownership kind for a declared class or type member.
|
|
132
|
+
|
|
133
|
+
## `SourceRelationKind`
|
|
134
|
+
|
|
135
|
+
Canonical relation kinds published by code maps and implementation manifests.
|
|
136
|
+
|
|
129
137
|
## `ImplementationManifest`
|
|
130
138
|
|
|
131
139
|
A versioned, language-neutral statement of observed implementation facts and provenance.
|
|
@@ -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_member_kind import SourceMemberKind
|
|
33
|
+
from .shared.code.models.source_relation_kind import SourceRelationKind
|
|
32
34
|
|
|
33
35
|
__all__ = [
|
|
34
36
|
"CacheOptions",
|
|
@@ -48,6 +50,8 @@ __all__ = [
|
|
|
48
50
|
"ModwireApplication",
|
|
49
51
|
"QueryableCodeMap",
|
|
50
52
|
"ScanPolicy",
|
|
53
|
+
"SourceMemberKind",
|
|
54
|
+
"SourceRelationKind",
|
|
51
55
|
]
|
|
52
56
|
|
|
53
57
|
|
|
@@ -227,6 +231,8 @@ class ModwireApplication:
|
|
|
227
231
|
CachedResult,
|
|
228
232
|
CacheOptions,
|
|
229
233
|
ScanPolicy,
|
|
234
|
+
SourceMemberKind,
|
|
235
|
+
SourceRelationKind,
|
|
230
236
|
ImplementationManifest,
|
|
231
237
|
ImplementationManifestDocument,
|
|
232
238
|
ManifestFormat,
|
{modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/dependency/services/graph_builder.py
RENAMED
|
@@ -19,7 +19,7 @@ class DependencyGraphBuilder(GraphBuilder):
|
|
|
19
19
|
graph.add_edge(
|
|
20
20
|
file_path,
|
|
21
21
|
imported_reference.target_file_id,
|
|
22
|
-
specifier=imported_reference.
|
|
22
|
+
specifier=imported_reference.path,
|
|
23
23
|
resolution=imported_reference.resolution,
|
|
24
24
|
)
|
|
25
25
|
return graph
|
|
Binary file
|
{modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/php/script.src.php
RENAMED
|
@@ -13,6 +13,7 @@ use PhpParser\Node\Name;
|
|
|
13
13
|
use PhpParser\Node\Param;
|
|
14
14
|
use PhpParser\Node\Stmt;
|
|
15
15
|
use PhpParser\ParserFactory;
|
|
16
|
+
use PhpParser\PrettyPrinter\Standard;
|
|
16
17
|
|
|
17
18
|
function line_count_for_content(string $content): int {
|
|
18
19
|
return max(1, substr_count($content, "\n") + 1);
|
|
@@ -164,10 +165,72 @@ function member_visibility(Stmt\ClassMethod|Stmt\Property|Stmt\ClassConst $node)
|
|
|
164
165
|
return 'public';
|
|
165
166
|
}
|
|
166
167
|
|
|
168
|
+
function parameter_visibility(Param $param): string {
|
|
169
|
+
if (($param->flags & Stmt\Class_::MODIFIER_PRIVATE) !== 0) {
|
|
170
|
+
return 'private';
|
|
171
|
+
}
|
|
172
|
+
if (($param->flags & Stmt\Class_::MODIFIER_PROTECTED) !== 0) {
|
|
173
|
+
return 'protected';
|
|
174
|
+
}
|
|
175
|
+
return 'public';
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
function type_annotation(Node|Name|string|null $type): string {
|
|
179
|
+
if ($type instanceof Node\NullableType) {
|
|
180
|
+
return '?' . type_annotation($type->type);
|
|
181
|
+
}
|
|
182
|
+
if ($type instanceof Node\UnionType) {
|
|
183
|
+
return implode('|', array_map(
|
|
184
|
+
fn (Node $item): string => $item instanceof Node\IntersectionType
|
|
185
|
+
? '(' . type_annotation($item) . ')'
|
|
186
|
+
: type_annotation($item),
|
|
187
|
+
$type->types
|
|
188
|
+
));
|
|
189
|
+
}
|
|
190
|
+
if ($type instanceof Node\IntersectionType) {
|
|
191
|
+
return implode('&', array_map(type_annotation(...), $type->types));
|
|
192
|
+
}
|
|
193
|
+
if ($type instanceof Name) {
|
|
194
|
+
return $type->toCodeString();
|
|
195
|
+
}
|
|
196
|
+
return node_name($type);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
function type_is_optional(Node|Name|string|null $type): bool {
|
|
200
|
+
if ($type instanceof Node\NullableType) {
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
if ($type instanceof Node\UnionType) {
|
|
204
|
+
return in_array('null', array_map(fn (Node $item): string => strtolower(type_annotation($item)), $type->types), true);
|
|
205
|
+
}
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
function attribute_argument(Arg $argument): string {
|
|
210
|
+
$printer = new Standard();
|
|
211
|
+
$value = $printer->prettyPrintExpr($argument->value);
|
|
212
|
+
if ($argument->name !== null) {
|
|
213
|
+
return node_name($argument->name) . ': ' . $value;
|
|
214
|
+
}
|
|
215
|
+
return $argument->unpack ? '...' . $value : $value;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
function declaration_annotations(Stmt\ClassLike $node): array {
|
|
219
|
+
$annotations = [];
|
|
220
|
+
foreach ($node->attrGroups as $group) {
|
|
221
|
+
foreach ($group->attrs as $attribute) {
|
|
222
|
+
$arguments = array_map(attribute_argument(...), $attribute->args);
|
|
223
|
+
$annotations[] = type_annotation($attribute->name)
|
|
224
|
+
. ($arguments === [] ? '' : '(' . implode(', ', $arguments) . ')');
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return $annotations;
|
|
228
|
+
}
|
|
229
|
+
|
|
167
230
|
function parameter_definitions(array $params): array {
|
|
168
231
|
return array_map(fn (Param $param): array => [
|
|
169
232
|
'name' => var_name($param->var),
|
|
170
|
-
'annotation' =>
|
|
233
|
+
'annotation' => type_annotation($param->type),
|
|
171
234
|
'kind' => $param->variadic ? 'variadic_positional' : 'positional',
|
|
172
235
|
'has_default' => $param->default !== null || $param->variadic,
|
|
173
236
|
], $params);
|
|
@@ -220,6 +283,7 @@ function source_callable_entry(
|
|
|
220
283
|
'kind' => $kind,
|
|
221
284
|
'visibility' => $visibility,
|
|
222
285
|
'visibility_intent' => visibility_intent($name, $visibility),
|
|
286
|
+
'declaration_annotations' => [],
|
|
223
287
|
'line_start' => $node->getStartLine(),
|
|
224
288
|
'line_end' => $node->getEndLine(),
|
|
225
289
|
'line_count' => line_span($node),
|
|
@@ -320,11 +384,15 @@ function expression_target_name(string $expression): string {
|
|
|
320
384
|
return trim($expression, '$\\');
|
|
321
385
|
}
|
|
322
386
|
|
|
323
|
-
function
|
|
387
|
+
function source_text(Node $node, string $content): string {
|
|
388
|
+
return substr($content, $node->getStartFilePos(), $node->getEndFilePos() - $node->getStartFilePos() + 1);
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
function collect_imports(array $nodes, string $content): array {
|
|
324
392
|
$imports = [];
|
|
325
393
|
$statementId = 0;
|
|
326
394
|
|
|
327
|
-
walk_nodes($nodes, function (Node $node, array $parents) use (&$imports, &$statementId): void {
|
|
395
|
+
walk_nodes($nodes, function (Node $node, array $parents) use ($content, &$imports, &$statementId): void {
|
|
328
396
|
if (!$node instanceof Stmt\Use_ && !$node instanceof Stmt\GroupUse) {
|
|
329
397
|
return;
|
|
330
398
|
}
|
|
@@ -333,9 +401,9 @@ function collect_imports(array $nodes): array {
|
|
|
333
401
|
}
|
|
334
402
|
|
|
335
403
|
$statementId++;
|
|
336
|
-
$prefix = $node instanceof Stmt\GroupUse ?
|
|
404
|
+
$prefix = $node instanceof Stmt\GroupUse ? source_text($node->prefix, $content) . '\\' : '';
|
|
337
405
|
foreach ($node->uses as $use) {
|
|
338
|
-
$path =
|
|
406
|
+
$path = $prefix . source_text($use->name, $content);
|
|
339
407
|
$alias = $use->alias !== null ? node_name($use->alias) : '';
|
|
340
408
|
$symbolName = imported_symbol_name($path);
|
|
341
409
|
$imports[] = [
|
|
@@ -413,7 +481,11 @@ function collect_definitions(array $nodes, string $sourceId): array {
|
|
|
413
481
|
$properties[$propertyProperty->name->toString()] = [
|
|
414
482
|
'name' => $propertyProperty->name->toString(),
|
|
415
483
|
'is_optional' => $propertyProperty->default instanceof Expr\ConstFetch
|
|
416
|
-
&& strtolower(node_name($propertyProperty->default->name)) === 'null'
|
|
484
|
+
&& strtolower(node_name($propertyProperty->default->name)) === 'null'
|
|
485
|
+
|| type_is_optional($property->type),
|
|
486
|
+
'annotation' => type_annotation($property->type),
|
|
487
|
+
'visibility' => member_visibility($property),
|
|
488
|
+
'member_kind' => $property->isStatic() ? 'static' : 'instance',
|
|
417
489
|
];
|
|
418
490
|
}
|
|
419
491
|
}
|
|
@@ -426,7 +498,10 @@ function collect_definitions(array $nodes, string $sourceId): array {
|
|
|
426
498
|
$propertyName = var_name($param->var);
|
|
427
499
|
$properties[$propertyName] = [
|
|
428
500
|
'name' => $propertyName,
|
|
429
|
-
'is_optional' => $param->default !== null,
|
|
501
|
+
'is_optional' => $param->default !== null || type_is_optional($param->type),
|
|
502
|
+
'annotation' => type_annotation($param->type),
|
|
503
|
+
'visibility' => parameter_visibility($param),
|
|
504
|
+
'member_kind' => 'instance',
|
|
430
505
|
];
|
|
431
506
|
}
|
|
432
507
|
}
|
|
@@ -441,6 +516,7 @@ function collect_definitions(array $nodes, string $sourceId): array {
|
|
|
441
516
|
'name' => $methodName,
|
|
442
517
|
'visibility' => member_visibility($method),
|
|
443
518
|
'visibility_intent' => visibility_intent($methodName, member_visibility($method)),
|
|
519
|
+
'declaration_annotations' => [],
|
|
444
520
|
'line_count' => line_span($method),
|
|
445
521
|
'declared_args' => count($parameters),
|
|
446
522
|
'optional_args' => count(array_filter($parameters, fn (array $parameter): bool => $parameter['has_default'])),
|
|
@@ -460,6 +536,7 @@ function collect_definitions(array $nodes, string $sourceId): array {
|
|
|
460
536
|
'name' => $name,
|
|
461
537
|
'visibility' => class_visibility($node),
|
|
462
538
|
'visibility_intent' => visibility_intent($name, class_visibility($node)),
|
|
539
|
+
'declaration_annotations' => declaration_annotations($node),
|
|
463
540
|
'properties' => array_values($properties),
|
|
464
541
|
'line_count' => line_span($node),
|
|
465
542
|
];
|
|
@@ -502,6 +579,7 @@ function collect_definitions(array $nodes, string $sourceId): array {
|
|
|
502
579
|
'name' => $method->name->toString(),
|
|
503
580
|
'visibility' => 'public',
|
|
504
581
|
'visibility_intent' => visibility_intent($method->name->toString(), 'public'),
|
|
582
|
+
'declaration_annotations' => [],
|
|
505
583
|
'line_count' => line_span($method),
|
|
506
584
|
'declared_args' => count($parameters),
|
|
507
585
|
'optional_args' => count(array_filter($parameters, fn (array $parameter): bool => $parameter['has_default'])),
|
|
@@ -512,6 +590,7 @@ function collect_definitions(array $nodes, string $sourceId): array {
|
|
|
512
590
|
'name' => $name,
|
|
513
591
|
'visibility' => 'public',
|
|
514
592
|
'visibility_intent' => visibility_intent($name, 'public'),
|
|
593
|
+
'declaration_annotations' => declaration_annotations($node),
|
|
515
594
|
'methods' => $methods,
|
|
516
595
|
'properties' => [],
|
|
517
596
|
'signatures' => [],
|
|
@@ -534,6 +613,7 @@ function collect_definitions(array $nodes, string $sourceId): array {
|
|
|
534
613
|
'name' => $name,
|
|
535
614
|
'visibility' => 'public',
|
|
536
615
|
'visibility_intent' => visibility_intent($name, 'public'),
|
|
616
|
+
'declaration_annotations' => [],
|
|
537
617
|
'line_count' => line_span($node),
|
|
538
618
|
'declared_args' => count($parameters),
|
|
539
619
|
'optional_args' => count(array_filter($parameters, fn (array $parameter): bool => $parameter['has_default'])),
|
|
@@ -794,7 +874,7 @@ function extract_file(string $path, ?string $sourceId = null, ?string $sourcesRo
|
|
|
794
874
|
$graph = collect_values_and_callables($nodes, $resolvedSourceId);
|
|
795
875
|
|
|
796
876
|
return [
|
|
797
|
-
'imports' => collect_imports($nodes),
|
|
877
|
+
'imports' => collect_imports($nodes, $content),
|
|
798
878
|
'exports' => $definitions['exports'],
|
|
799
879
|
'classes' => $definitions['classes'],
|
|
800
880
|
'interfaces' => $definitions['interfaces'],
|
{modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/typescript/script.js
RENAMED
|
@@ -229767,6 +229767,14 @@ function visibilityFromModifiers(node, fallback = 'public') {
|
|
|
229767
229767
|
const name = typeof node.getName === 'function' ? node.getName() : '';
|
|
229768
229768
|
return name.startsWith('#') ? 'private' : fallback;
|
|
229769
229769
|
}
|
|
229770
|
+
function memberKindFromModifiers(node) {
|
|
229771
|
+
return node.getModifiers().some(modifier => modifier.getKind() === ts_morph_1.SyntaxKind.StaticKeyword)
|
|
229772
|
+
? 'static'
|
|
229773
|
+
: 'instance';
|
|
229774
|
+
}
|
|
229775
|
+
function declarationAnnotations(node) {
|
|
229776
|
+
return node.getDecorators().map(decorator => decorator.getExpression().getText());
|
|
229777
|
+
}
|
|
229770
229778
|
function isExported(node) {
|
|
229771
229779
|
return Boolean((typeof node.hasExportKeyword === 'function' && node.hasExportKeyword())
|
|
229772
229780
|
|| (typeof node.isDefaultExport === 'function' && node.isDefaultExport()));
|
|
@@ -229902,6 +229910,7 @@ function sourceCallable(options) {
|
|
|
229902
229910
|
kind: options.kind,
|
|
229903
229911
|
visibility: options.visibility,
|
|
229904
229912
|
visibility_intent: visibilityIntent(options.name, options.visibility),
|
|
229913
|
+
declaration_annotations: [],
|
|
229905
229914
|
line_start: lineNumberAt(options.lineStarts, options.startIndex),
|
|
229906
229915
|
line_end: lineNumberAt(options.lineStarts, options.endIndex),
|
|
229907
229916
|
line_count: lineSpan(options.lineStarts, options.startIndex, options.endIndex),
|
|
@@ -230162,10 +230171,27 @@ function collectExports(sourceFile, filePath, sourcesRoot) {
|
|
|
230162
230171
|
function classDeclarationIsAbstract(classDeclaration) {
|
|
230163
230172
|
return classDeclaration.getModifiers().some(modifier => modifier.getKind() === ts_morph_1.SyntaxKind.AbstractKeyword);
|
|
230164
230173
|
}
|
|
230165
|
-
function
|
|
230174
|
+
function typeIncludesUndefined(typeNode) {
|
|
230175
|
+
if (typeNode === undefined) {
|
|
230176
|
+
return false;
|
|
230177
|
+
}
|
|
230178
|
+
if (typeNode.kind === ts_morph_1.SyntaxKind.UndefinedKeyword) {
|
|
230179
|
+
return true;
|
|
230180
|
+
}
|
|
230181
|
+
if (ts_morph_1.ts.isUnionTypeNode(typeNode)) {
|
|
230182
|
+
return typeNode.types.some(typeIncludesUndefined);
|
|
230183
|
+
}
|
|
230184
|
+
if (ts_morph_1.ts.isParenthesizedTypeNode(typeNode)) {
|
|
230185
|
+
return typeIncludesUndefined(typeNode.type);
|
|
230186
|
+
}
|
|
230187
|
+
return false;
|
|
230188
|
+
}
|
|
230189
|
+
function propertyIsOptional(property) {
|
|
230190
|
+
const typeNode = typeof property.getTypeNode === 'function' ? property.getTypeNode() : undefined;
|
|
230191
|
+
const initializer = typeof property.getInitializer === 'function' ? property.getInitializer() : undefined;
|
|
230166
230192
|
return Boolean((typeof property.hasQuestionToken === 'function' && property.hasQuestionToken())
|
|
230167
|
-
||
|
|
230168
|
-
|| textOf(
|
|
230193
|
+
|| typeIncludesUndefined(typeNode?.compilerNode)
|
|
230194
|
+
|| textOf(initializer).match(/^(undefined|null)$/));
|
|
230169
230195
|
}
|
|
230170
230196
|
function sourceClassMethod(method, lineStarts, name = propertyNameText(method)) {
|
|
230171
230197
|
const parameters = functionParameters(method);
|
|
@@ -230174,6 +230200,7 @@ function sourceClassMethod(method, lineStarts, name = propertyNameText(method))
|
|
|
230174
230200
|
name,
|
|
230175
230201
|
visibility,
|
|
230176
230202
|
visibility_intent: visibilityIntent(name, visibility),
|
|
230203
|
+
declaration_annotations: [],
|
|
230177
230204
|
line_count: lineSpan(lineStarts, method.getStart(), endIndexForNode(method)),
|
|
230178
230205
|
declared_args: parameters.length,
|
|
230179
230206
|
optional_args: parameters.filter(parameter => parameter.has_default).length,
|
|
@@ -230192,13 +230219,26 @@ function collectClasses(sourceFile, lineStarts, sourceId) {
|
|
|
230192
230219
|
});
|
|
230193
230220
|
const properties = new Map();
|
|
230194
230221
|
for (const property of classDeclaration.getProperties()) {
|
|
230195
|
-
|
|
230222
|
+
const propertyName = propertyNameText(property);
|
|
230223
|
+
properties.set(propertyName, {
|
|
230224
|
+
name: propertyName,
|
|
230225
|
+
is_optional: propertyIsOptional(property),
|
|
230226
|
+
annotation: textOf(property.getTypeNode()),
|
|
230227
|
+
visibility: visibilityFromModifiers(property),
|
|
230228
|
+
member_kind: memberKindFromModifiers(property),
|
|
230229
|
+
});
|
|
230196
230230
|
}
|
|
230197
230231
|
for (const constructorDeclaration of classDeclaration.getConstructors()) {
|
|
230198
230232
|
for (const parameter of constructorDeclaration.getParameters()) {
|
|
230199
230233
|
if (parameter.isParameterProperty()) {
|
|
230200
230234
|
const parameterName = singleBindingName(parameter.getNameNode()) || parameter.getNameNode().getText();
|
|
230201
|
-
properties.set(parameterName,
|
|
230235
|
+
properties.set(parameterName, {
|
|
230236
|
+
name: parameterName,
|
|
230237
|
+
is_optional: parameter.isOptional() || parameter.getInitializer() !== undefined,
|
|
230238
|
+
annotation: textOf(parameter.getTypeNode()),
|
|
230239
|
+
visibility: visibilityFromModifiers(parameter),
|
|
230240
|
+
member_kind: 'instance',
|
|
230241
|
+
});
|
|
230202
230242
|
}
|
|
230203
230243
|
}
|
|
230204
230244
|
}
|
|
@@ -230226,10 +230266,8 @@ function collectClasses(sourceFile, lineStarts, sourceId) {
|
|
|
230226
230266
|
name,
|
|
230227
230267
|
visibility,
|
|
230228
230268
|
visibility_intent: visibilityIntent(name, visibility),
|
|
230229
|
-
|
|
230230
|
-
|
|
230231
|
-
is_optional: Boolean(isOptional),
|
|
230232
|
-
})),
|
|
230269
|
+
declaration_annotations: declarationAnnotations(classDeclaration),
|
|
230270
|
+
properties: Array.from(properties.values()),
|
|
230233
230271
|
line_count: lineSpan(lineStarts, classDeclaration.getStart(), endIndexForNode(classDeclaration)),
|
|
230234
230272
|
};
|
|
230235
230273
|
if (classDeclarationIsAbstract(classDeclaration)) {
|
|
@@ -230279,7 +230317,10 @@ function collectInterfaces(sourceFile, lineStarts, sourceId) {
|
|
|
230279
230317
|
const visibility = moduleVisibility(interfaceDeclaration);
|
|
230280
230318
|
const properties = interfaceDeclaration.getProperties().map(property => ({
|
|
230281
230319
|
name: propertyNameText(property),
|
|
230282
|
-
is_optional:
|
|
230320
|
+
is_optional: propertyIsOptional(property),
|
|
230321
|
+
annotation: textOf(property.getTypeNode()),
|
|
230322
|
+
visibility: 'public',
|
|
230323
|
+
member_kind: 'instance',
|
|
230283
230324
|
}));
|
|
230284
230325
|
const methods = interfaceDeclaration.getMethods().map(method => sourceClassMethod(method, lineStarts));
|
|
230285
230326
|
return {
|
|
@@ -230292,6 +230333,7 @@ function collectInterfaces(sourceFile, lineStarts, sourceId) {
|
|
|
230292
230333
|
name: interfaceDeclaration.getName(),
|
|
230293
230334
|
visibility,
|
|
230294
230335
|
visibility_intent: visibilityIntent(interfaceDeclaration.getName(), visibility),
|
|
230336
|
+
declaration_annotations: [],
|
|
230295
230337
|
methods,
|
|
230296
230338
|
properties,
|
|
230297
230339
|
signatures: collectSignaturesFromMembers(interfaceDeclaration.getMembers(), lineStarts),
|
|
@@ -230306,7 +230348,10 @@ function collectTypes(sourceFile, lineStarts, sourceId) {
|
|
|
230306
230348
|
const members = ts_morph_1.Node.isTypeLiteral(typeNode) ? typeNode.getMembers() : [];
|
|
230307
230349
|
const properties = members.filter(member => ts_morph_1.Node.isPropertySignature(member)).map(property => ({
|
|
230308
230350
|
name: propertyNameText(property),
|
|
230309
|
-
is_optional:
|
|
230351
|
+
is_optional: propertyIsOptional(property),
|
|
230352
|
+
annotation: textOf(property.getTypeNode()),
|
|
230353
|
+
visibility: 'public',
|
|
230354
|
+
member_kind: 'instance',
|
|
230310
230355
|
}));
|
|
230311
230356
|
return {
|
|
230312
230357
|
declaration_id: {
|
|
@@ -230318,6 +230363,7 @@ function collectTypes(sourceFile, lineStarts, sourceId) {
|
|
|
230318
230363
|
name: typeAlias.getName(),
|
|
230319
230364
|
visibility,
|
|
230320
230365
|
visibility_intent: visibilityIntent(typeAlias.getName(), visibility),
|
|
230366
|
+
declaration_annotations: [],
|
|
230321
230367
|
properties,
|
|
230322
230368
|
signatures: collectSignaturesFromMembers(members, lineStarts),
|
|
230323
230369
|
line_count: lineSpan(lineStarts, typeAlias.getStart(), endIndexForNode(typeAlias)),
|
|
@@ -230394,6 +230440,7 @@ function collectFunctions(sourceFile, lineStarts, sourceId) {
|
|
|
230394
230440
|
name,
|
|
230395
230441
|
visibility,
|
|
230396
230442
|
visibility_intent: visibilityIntent(name, visibility),
|
|
230443
|
+
declaration_annotations: [],
|
|
230397
230444
|
line_count: lineSpan(lineStarts, node.getStart(), endIndexForNode(node)),
|
|
230398
230445
|
declared_args: parameters.length,
|
|
230399
230446
|
optional_args: parameters.filter(parameter => parameter.has_default).length,
|
{modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/resources/typescript/script.ts
RENAMED
|
@@ -136,6 +136,16 @@ function visibilityFromModifiers(node, fallback = 'public') {
|
|
|
136
136
|
return name.startsWith('#') ? 'private' : fallback;
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
+
function memberKindFromModifiers(node) {
|
|
140
|
+
return node.getModifiers().some(modifier => modifier.getKind() === SyntaxKind.StaticKeyword)
|
|
141
|
+
? 'static'
|
|
142
|
+
: 'instance';
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function declarationAnnotations(node) {
|
|
146
|
+
return node.getDecorators().map(decorator => decorator.getExpression().getText());
|
|
147
|
+
}
|
|
148
|
+
|
|
139
149
|
function isExported(node) {
|
|
140
150
|
return Boolean(
|
|
141
151
|
(typeof node.hasExportKeyword === 'function' && node.hasExportKeyword())
|
|
@@ -287,6 +297,7 @@ function sourceCallable(options) {
|
|
|
287
297
|
kind: options.kind,
|
|
288
298
|
visibility: options.visibility,
|
|
289
299
|
visibility_intent: visibilityIntent(options.name, options.visibility),
|
|
300
|
+
declaration_annotations: [],
|
|
290
301
|
line_start: lineNumberAt(options.lineStarts, options.startIndex),
|
|
291
302
|
line_end: lineNumberAt(options.lineStarts, options.endIndex),
|
|
292
303
|
line_count: lineSpan(options.lineStarts, options.startIndex, options.endIndex),
|
|
@@ -575,11 +586,29 @@ function classDeclarationIsAbstract(classDeclaration) {
|
|
|
575
586
|
return classDeclaration.getModifiers().some(modifier => modifier.getKind() === SyntaxKind.AbstractKeyword);
|
|
576
587
|
}
|
|
577
588
|
|
|
578
|
-
function
|
|
589
|
+
function typeIncludesUndefined(typeNode) {
|
|
590
|
+
if (typeNode === undefined) {
|
|
591
|
+
return false;
|
|
592
|
+
}
|
|
593
|
+
if (typeNode.kind === SyntaxKind.UndefinedKeyword) {
|
|
594
|
+
return true;
|
|
595
|
+
}
|
|
596
|
+
if (ts.isUnionTypeNode(typeNode)) {
|
|
597
|
+
return typeNode.types.some(typeIncludesUndefined);
|
|
598
|
+
}
|
|
599
|
+
if (ts.isParenthesizedTypeNode(typeNode)) {
|
|
600
|
+
return typeIncludesUndefined(typeNode.type);
|
|
601
|
+
}
|
|
602
|
+
return false;
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
function propertyIsOptional(property) {
|
|
606
|
+
const typeNode = typeof property.getTypeNode === 'function' ? property.getTypeNode() : undefined;
|
|
607
|
+
const initializer = typeof property.getInitializer === 'function' ? property.getInitializer() : undefined;
|
|
579
608
|
return Boolean(
|
|
580
609
|
(typeof property.hasQuestionToken === 'function' && property.hasQuestionToken())
|
|
581
|
-
||
|
|
582
|
-
|| textOf(
|
|
610
|
+
|| typeIncludesUndefined(typeNode?.compilerNode)
|
|
611
|
+
|| textOf(initializer).match(/^(undefined|null)$/),
|
|
583
612
|
);
|
|
584
613
|
}
|
|
585
614
|
|
|
@@ -590,6 +619,7 @@ function sourceClassMethod(method, lineStarts, name = propertyNameText(method))
|
|
|
590
619
|
name,
|
|
591
620
|
visibility,
|
|
592
621
|
visibility_intent: visibilityIntent(name, visibility),
|
|
622
|
+
declaration_annotations: [],
|
|
593
623
|
line_count: lineSpan(lineStarts, method.getStart(), endIndexForNode(method)),
|
|
594
624
|
declared_args: parameters.length,
|
|
595
625
|
optional_args: parameters.filter(parameter => parameter.has_default).length,
|
|
@@ -611,13 +641,26 @@ function collectClasses(sourceFile, lineStarts, sourceId) {
|
|
|
611
641
|
|
|
612
642
|
const properties = new Map();
|
|
613
643
|
for (const property of classDeclaration.getProperties()) {
|
|
614
|
-
|
|
644
|
+
const propertyName = propertyNameText(property);
|
|
645
|
+
properties.set(propertyName, {
|
|
646
|
+
name: propertyName,
|
|
647
|
+
is_optional: propertyIsOptional(property),
|
|
648
|
+
annotation: textOf(property.getTypeNode()),
|
|
649
|
+
visibility: visibilityFromModifiers(property),
|
|
650
|
+
member_kind: memberKindFromModifiers(property),
|
|
651
|
+
});
|
|
615
652
|
}
|
|
616
653
|
for (const constructorDeclaration of classDeclaration.getConstructors()) {
|
|
617
654
|
for (const parameter of constructorDeclaration.getParameters()) {
|
|
618
655
|
if (parameter.isParameterProperty()) {
|
|
619
656
|
const parameterName = singleBindingName(parameter.getNameNode()) || parameter.getNameNode().getText();
|
|
620
|
-
properties.set(parameterName,
|
|
657
|
+
properties.set(parameterName, {
|
|
658
|
+
name: parameterName,
|
|
659
|
+
is_optional: parameter.isOptional() || parameter.getInitializer() !== undefined,
|
|
660
|
+
annotation: textOf(parameter.getTypeNode()),
|
|
661
|
+
visibility: visibilityFromModifiers(parameter),
|
|
662
|
+
member_kind: 'instance',
|
|
663
|
+
});
|
|
621
664
|
}
|
|
622
665
|
}
|
|
623
666
|
}
|
|
@@ -646,10 +689,8 @@ function collectClasses(sourceFile, lineStarts, sourceId) {
|
|
|
646
689
|
name,
|
|
647
690
|
visibility,
|
|
648
691
|
visibility_intent: visibilityIntent(name, visibility),
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
is_optional: Boolean(isOptional),
|
|
652
|
-
})),
|
|
692
|
+
declaration_annotations: declarationAnnotations(classDeclaration),
|
|
693
|
+
properties: Array.from(properties.values()),
|
|
653
694
|
line_count: lineSpan(lineStarts, classDeclaration.getStart(), endIndexForNode(classDeclaration)),
|
|
654
695
|
};
|
|
655
696
|
|
|
@@ -700,7 +741,10 @@ function collectInterfaces(sourceFile, lineStarts, sourceId) {
|
|
|
700
741
|
const visibility = moduleVisibility(interfaceDeclaration);
|
|
701
742
|
const properties = interfaceDeclaration.getProperties().map(property => ({
|
|
702
743
|
name: propertyNameText(property),
|
|
703
|
-
is_optional:
|
|
744
|
+
is_optional: propertyIsOptional(property),
|
|
745
|
+
annotation: textOf(property.getTypeNode()),
|
|
746
|
+
visibility: 'public',
|
|
747
|
+
member_kind: 'instance',
|
|
704
748
|
}));
|
|
705
749
|
const methods = interfaceDeclaration.getMethods().map(method => sourceClassMethod(method, lineStarts));
|
|
706
750
|
return {
|
|
@@ -713,6 +757,7 @@ function collectInterfaces(sourceFile, lineStarts, sourceId) {
|
|
|
713
757
|
name: interfaceDeclaration.getName(),
|
|
714
758
|
visibility,
|
|
715
759
|
visibility_intent: visibilityIntent(interfaceDeclaration.getName(), visibility),
|
|
760
|
+
declaration_annotations: [],
|
|
716
761
|
methods,
|
|
717
762
|
properties,
|
|
718
763
|
signatures: collectSignaturesFromMembers(interfaceDeclaration.getMembers(), lineStarts),
|
|
@@ -728,7 +773,10 @@ function collectTypes(sourceFile, lineStarts, sourceId) {
|
|
|
728
773
|
const members = Node.isTypeLiteral(typeNode) ? typeNode.getMembers() : [];
|
|
729
774
|
const properties = members.filter(member => Node.isPropertySignature(member)).map(property => ({
|
|
730
775
|
name: propertyNameText(property),
|
|
731
|
-
is_optional:
|
|
776
|
+
is_optional: propertyIsOptional(property),
|
|
777
|
+
annotation: textOf(property.getTypeNode()),
|
|
778
|
+
visibility: 'public',
|
|
779
|
+
member_kind: 'instance',
|
|
732
780
|
}));
|
|
733
781
|
return {
|
|
734
782
|
declaration_id: {
|
|
@@ -740,6 +788,7 @@ function collectTypes(sourceFile, lineStarts, sourceId) {
|
|
|
740
788
|
name: typeAlias.getName(),
|
|
741
789
|
visibility,
|
|
742
790
|
visibility_intent: visibilityIntent(typeAlias.getName(), visibility),
|
|
791
|
+
declaration_annotations: [],
|
|
743
792
|
properties,
|
|
744
793
|
signatures: collectSignaturesFromMembers(members, lineStarts),
|
|
745
794
|
line_count: lineSpan(lineStarts, typeAlias.getStart(), endIndexForNode(typeAlias)),
|
|
@@ -821,6 +870,7 @@ function collectFunctions(sourceFile, lineStarts, sourceId) {
|
|
|
821
870
|
name,
|
|
822
871
|
visibility,
|
|
823
872
|
visibility_intent: visibilityIntent(name, visibility),
|
|
873
|
+
declaration_annotations: [],
|
|
824
874
|
line_count: lineSpan(lineStarts, node.getStart(), endIndexForNode(node)),
|
|
825
875
|
declared_args: parameters.length,
|
|
826
876
|
optional_args: parameters.filter(parameter => parameter.has_default).length,
|
{modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/services/php_extractor.py
RENAMED
|
@@ -52,17 +52,23 @@ class PhpExtractor(SourceExtractor):
|
|
|
52
52
|
CapabilityCoverage(
|
|
53
53
|
capability=FactCapability.ANNOTATIONS,
|
|
54
54
|
status=CapabilityStatus.PARTIAL,
|
|
55
|
-
explanation=
|
|
55
|
+
explanation=(
|
|
56
|
+
"Class and interface attributes and declared type annotations are extracted; "
|
|
57
|
+
"attributes on other declarations are not yet emitted."
|
|
58
|
+
),
|
|
56
59
|
),
|
|
57
60
|
CapabilityCoverage(
|
|
58
61
|
capability=FactCapability.MODIFIERS,
|
|
59
62
|
status=CapabilityStatus.PARTIAL,
|
|
60
|
-
explanation="Visibility intent and
|
|
63
|
+
explanation="Visibility intent, callable kind, and property member kind are normalized.",
|
|
61
64
|
),
|
|
62
65
|
CapabilityCoverage(
|
|
63
66
|
capability=FactCapability.ATTRIBUTES,
|
|
64
67
|
status=CapabilityStatus.SUPPORTED,
|
|
65
|
-
explanation=
|
|
68
|
+
explanation=(
|
|
69
|
+
"Declared and promoted property identity, exact declared type, visibility, optionality, "
|
|
70
|
+
"and member kind are extracted."
|
|
71
|
+
),
|
|
66
72
|
),
|
|
67
73
|
CapabilityCoverage(
|
|
68
74
|
capability=FactCapability.INHERITANCE,
|
{modwire-9.3.0 → modwire-10.0.0}/src/modwire/extraction/extractors/services/python_extractor.py
RENAMED
|
@@ -54,19 +54,22 @@ class PythonExtractor(SourceExtractor):
|
|
|
54
54
|
capability=FactCapability.ANNOTATIONS,
|
|
55
55
|
status=CapabilityStatus.PARTIAL,
|
|
56
56
|
explanation=(
|
|
57
|
-
"
|
|
57
|
+
"Class and callable decorators and declared type annotations are extracted; "
|
|
58
58
|
"arbitrary annotations are not evaluated."
|
|
59
59
|
),
|
|
60
60
|
),
|
|
61
61
|
CapabilityCoverage(
|
|
62
62
|
capability=FactCapability.MODIFIERS,
|
|
63
63
|
status=CapabilityStatus.PARTIAL,
|
|
64
|
-
explanation="Visibility intent and
|
|
64
|
+
explanation="Visibility intent, callable kind, and class property member kind are normalized.",
|
|
65
65
|
),
|
|
66
66
|
CapabilityCoverage(
|
|
67
67
|
capability=FactCapability.ATTRIBUTES,
|
|
68
68
|
status=CapabilityStatus.SUPPORTED,
|
|
69
|
-
explanation=
|
|
69
|
+
explanation=(
|
|
70
|
+
"Class property identity, exact declared type, visibility, optionality, and member kind "
|
|
71
|
+
"are extracted."
|
|
72
|
+
),
|
|
70
73
|
),
|
|
71
74
|
CapabilityCoverage(
|
|
72
75
|
capability=FactCapability.INHERITANCE,
|