modwire 9.3.0__tar.gz → 10.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. {modwire-9.3.0 → modwire-10.1.0}/.dev/modwire.egg-info/SOURCES.txt +4 -0
  2. {modwire-9.3.0 → modwire-10.1.0}/.github/workflows/ci.yml +3 -0
  3. {modwire-9.3.0 → modwire-10.1.0}/PKG-INFO +17 -1
  4. {modwire-9.3.0 → modwire-10.1.0}/README.md +16 -0
  5. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/application.py +15 -0
  6. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/facade.py +4 -0
  7. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/application.py +9 -0
  8. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/dependency/services/graph_builder.py +1 -1
  9. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/resources/php/script.php +0 -0
  10. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/resources/php/script.src.php +88 -8
  11. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/resources/typescript/build.py +1 -1
  12. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/resources/typescript/package-lock.json +7 -4
  13. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/resources/typescript/package.json +3 -0
  14. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/resources/typescript/script.js +283 -114
  15. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/resources/typescript/script.ts +61 -11
  16. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/services/php_extractor.py +9 -3
  17. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/services/python_extractor.py +6 -3
  18. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/services/python_syntax_parser.py +93 -12
  19. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/services/type_script_extractor.py +9 -3
  20. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/models/implementation_manifest.py +3 -3
  21. modwire-10.1.0/src/modwire/implementation/manifest/models/manifest_attribute.py +24 -0
  22. modwire-10.1.0/src/modwire/implementation/manifest/models/manifest_dependency.py +21 -0
  23. modwire-10.1.0/src/modwire/implementation/manifest/models/manifest_inheritance.py +19 -0
  24. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/services/code_map_manifest_compiler.py +88 -9
  25. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/code_map.py +1 -1
  26. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/dependency_graph.py +5 -6
  27. modwire-10.1.0/src/modwire/shared/code/models/edge.py +23 -0
  28. modwire-10.1.0/src/modwire/shared/code/models/source_class_property.py +11 -0
  29. modwire-10.1.0/src/modwire/shared/code/models/source_inheritance.py +19 -0
  30. modwire-10.1.0/src/modwire/shared/code/models/source_manifest_identity.py +10 -0
  31. modwire-10.1.0/src/modwire/shared/code/models/source_member_kind.py +8 -0
  32. modwire-10.1.0/src/modwire/shared/code/models/source_relation_kind.py +9 -0
  33. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_symbol.py +1 -0
  34. modwire-10.1.0/tests/application/test_08_implementation_manifest.py +279 -0
  35. modwire-10.1.0/tests/application/test_09_source_manifest_identity.py +120 -0
  36. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/dependency/test_02_invariants.py +5 -5
  37. {modwire-9.3.0 → modwire-10.1.0}/tests/shared/code/test_02_invariants.py +1 -1
  38. {modwire-9.3.0 → modwire-10.1.0}/tests/support/code_map.py +12 -2
  39. modwire-9.3.0/src/modwire/implementation/manifest/models/manifest_attribute.py +0 -8
  40. modwire-9.3.0/src/modwire/implementation/manifest/models/manifest_dependency.py +0 -12
  41. modwire-9.3.0/src/modwire/implementation/manifest/models/manifest_inheritance.py +0 -8
  42. modwire-9.3.0/src/modwire/shared/code/models/edge.py +0 -14
  43. modwire-9.3.0/src/modwire/shared/code/models/source_class_property.py +0 -6
  44. modwire-9.3.0/src/modwire/shared/code/models/source_inheritance.py +0 -10
  45. modwire-9.3.0/tests/application/test_08_implementation_manifest.py +0 -114
  46. {modwire-9.3.0 → modwire-10.1.0}/.github/workflows/release.yml +0 -0
  47. {modwire-9.3.0 → modwire-10.1.0}/.gitignore +0 -0
  48. {modwire-9.3.0 → modwire-10.1.0}/AGENTS.md +0 -0
  49. {modwire-9.3.0 → modwire-10.1.0}/LICENSE +0 -0
  50. {modwire-9.3.0 → modwire-10.1.0}/MANIFEST.in +0 -0
  51. {modwire-9.3.0 → modwire-10.1.0}/Makefile +0 -0
  52. {modwire-9.3.0 → modwire-10.1.0}/docs/target-language-ownership.md +0 -0
  53. {modwire-9.3.0 → modwire-10.1.0}/pyproject.toml +0 -0
  54. {modwire-9.3.0 → modwire-10.1.0}/scripts/check_extractors.py +0 -0
  55. {modwire-9.3.0 → modwire-10.1.0}/scripts/generate_docs.py +0 -0
  56. {modwire-9.3.0 → modwire-10.1.0}/scripts/verify_consumer.py +0 -0
  57. {modwire-9.3.0 → modwire-10.1.0}/setup.cfg +0 -0
  58. {modwire-9.3.0 → modwire-10.1.0}/setup.py +0 -0
  59. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/__init__.py +0 -0
  60. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/__main__.py +0 -0
  61. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/__init__.py +0 -0
  62. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/boundaries/__init__.py +0 -0
  63. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/boundaries/application.py +0 -0
  64. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/boundaries/domain.py +0 -0
  65. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/boundaries/models/__init__.py +0 -0
  66. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/boundaries/models/edge_rule_violation.py +0 -0
  67. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/boundaries/models/flow_report.py +0 -0
  68. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/boundaries/models/flow_violation.py +0 -0
  69. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/boundaries/models/types.py +0 -0
  70. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/boundaries/services/__init__.py +0 -0
  71. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/boundaries/services/backward_flow_analyzer.py +0 -0
  72. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/boundaries/services/boundaries_flow_analyzer.py +0 -0
  73. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/boundaries/services/module_boundary_analyzer.py +0 -0
  74. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/boundaries/services/no_cycles_flow_analyzer.py +0 -0
  75. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/boundaries/services/no_reentry_flow_analyzer.py +0 -0
  76. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/config/__init__.py +0 -0
  77. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/config/application.py +0 -0
  78. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/config/models/__init__.py +0 -0
  79. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/config/models/architecture_config.py +0 -0
  80. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/config/models/boundaries_config.py +0 -0
  81. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/config/models/boundary_rule.py +0 -0
  82. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/config/models/configuration_value.py +0 -0
  83. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/config/models/flow_realm.py +0 -0
  84. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/config/models/flow_rules.py +0 -0
  85. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/config/models/shape_config.py +0 -0
  86. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/config/models/shape_realm.py +0 -0
  87. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/config/models/shape_rules.py +0 -0
  88. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/config/models/tag_rule.py +0 -0
  89. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/facade.py +0 -0
  90. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/__init__.py +0 -0
  91. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/application.py +0 -0
  92. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/domain.py +0 -0
  93. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/models/__init__.py +0 -0
  94. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/models/callable_report_entry.py +0 -0
  95. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/models/callables_report.py +0 -0
  96. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/models/clusters_report.py +0 -0
  97. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/models/clusters_report_item.py +0 -0
  98. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/models/coherence_report.py +0 -0
  99. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/models/exports_report.py +0 -0
  100. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/models/exports_report_item.py +0 -0
  101. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/models/hotspots_report.py +0 -0
  102. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/models/hotspots_report_item.py +0 -0
  103. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/models/insight_report.py +0 -0
  104. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/services/__init__.py +0 -0
  105. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/services/callables_reporter.py +0 -0
  106. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/services/clusters_reporter.py +0 -0
  107. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/services/coherence_reporter.py +0 -0
  108. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/services/exports_reporter.py +0 -0
  109. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/services/hotspots_reporter.py +0 -0
  110. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/insights/services/insight_report_field_map.py +0 -0
  111. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/map/__init__.py +0 -0
  112. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/map/application.py +0 -0
  113. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/map/domain.py +0 -0
  114. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/map/models/__init__.py +0 -0
  115. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/map/models/architecture_map.py +0 -0
  116. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/map/models/architecture_realm.py +0 -0
  117. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/map/models/tag_map.py +0 -0
  118. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/map/models/tag_match.py +0 -0
  119. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/map/services/__init__.py +0 -0
  120. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/map/services/architecture_map_loader.py +0 -0
  121. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/map/services/tag_matcher.py +0 -0
  122. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/report/__init__.py +0 -0
  123. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/report/application.py +0 -0
  124. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/report/domain.py +0 -0
  125. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/report/models/__init__.py +0 -0
  126. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/report/models/architecture_group.py +0 -0
  127. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/report/models/map_report.py +0 -0
  128. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/report/models/report_catalog.py +0 -0
  129. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/report/models/report_descriptor.py +0 -0
  130. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/report/models/report_item.py +0 -0
  131. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/report/models/report_metadata.py +0 -0
  132. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/report/models/report_node.py +0 -0
  133. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/report/models/report_section.py +0 -0
  134. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/report/services/__init__.py +0 -0
  135. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/report/services/map_report_collector.py +0 -0
  136. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/shape/__init__.py +0 -0
  137. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/shape/application.py +0 -0
  138. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/shape/domain.py +0 -0
  139. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/shape/models/__init__.py +0 -0
  140. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/shape/models/shape_realm_architecture_map.py +0 -0
  141. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/shape/models/shape_report.py +0 -0
  142. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/shape/models/shape_violation.py +0 -0
  143. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/shape/services/__init__.py +0 -0
  144. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/shape/services/abstract_class_resolver.py +0 -0
  145. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/shape/services/callable_resolver.py +0 -0
  146. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/shape/services/class_resolver.py +0 -0
  147. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/shape/services/file_resolver.py +0 -0
  148. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/shape/services/import_resolver.py +0 -0
  149. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/shape/services/property_resolver.py +0 -0
  150. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/shape/services/signature_resolver.py +0 -0
  151. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/architecture/shape/services/symbol_resolver.py +0 -0
  152. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/autowiring.py +0 -0
  153. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/__init__.py +0 -0
  154. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/__init__.py +0 -0
  155. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/application.py +0 -0
  156. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/domain.py +0 -0
  157. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/models/__init__.py +0 -0
  158. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/models/cache_entry.py +0 -0
  159. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/models/cache_key.py +0 -0
  160. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/models/cache_kind.py +0 -0
  161. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/models/cache_options.py +0 -0
  162. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/models/cache_outcome.py +0 -0
  163. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/models/cache_plan.py +0 -0
  164. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/models/cache_stage.py +0 -0
  165. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/models/cache_storage_state.py +0 -0
  166. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/models/cached_result.py +0 -0
  167. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/models/source_cache_entry.py +0 -0
  168. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/services/__init__.py +0 -0
  169. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/services/cache_codec.py +0 -0
  170. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/services/cache_identity.py +0 -0
  171. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/cache/services/filesystem_cache_storage.py +0 -0
  172. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/documentation/__init__.py +0 -0
  173. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/documentation/application.py +0 -0
  174. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/documentation/services/__init__.py +0 -0
  175. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/documentation/services/documentation_generator.py +0 -0
  176. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/initialization/__init__.py +0 -0
  177. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/initialization/application.py +0 -0
  178. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/initialization/models/__init__.py +0 -0
  179. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/initialization/models/initialization_result.py +0 -0
  180. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/initialization/services/__init__.py +0 -0
  181. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/initialization/services/initialization_service.py +0 -0
  182. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/__init__.py +0 -0
  183. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/domain.py +0 -0
  184. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/models/__init__.py +0 -0
  185. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/models/command_request.py +0 -0
  186. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/models/extractor_batch_input.py +0 -0
  187. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/models/extractor_command_input.py +0 -0
  188. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/models/extractor_source_input.py +0 -0
  189. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/models/report_pipeline_context.py +0 -0
  190. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/models/source_entry.py +0 -0
  191. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/models/source_inventory.py +0 -0
  192. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/services/__init__.py +0 -0
  193. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/services/batch_source_reader.py +0 -0
  194. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/services/callables_insight.py +0 -0
  195. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/services/clusters_insight.py +0 -0
  196. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/services/coherence_insight.py +0 -0
  197. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/services/command_line.py +0 -0
  198. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/services/configuration_loader.py +0 -0
  199. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/services/extractor_command.py +0 -0
  200. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/services/flow_violations.py +0 -0
  201. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/services/hotspots_insight.py +0 -0
  202. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/services/map_tree.py +0 -0
  203. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/services/output_console.py +0 -0
  204. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/services/shape_violations.py +0 -0
  205. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/services/source_manifest_builder.py +0 -0
  206. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/services/success.py +0 -0
  207. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/services/unknown_files_warning.py +0 -0
  208. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/pipeline/services/unused_exports_insight.py +0 -0
  209. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/resources/__init__.py +0 -0
  210. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/resources/application.py +0 -0
  211. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/resources/models/__init__.py +0 -0
  212. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/resources/models/defaults.py +0 -0
  213. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/resources/models/init_asset.py +0 -0
  214. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/resources/templates/AGENTS.md +0 -0
  215. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/resources/templates/ARCHITECTURE.md +0 -0
  216. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/resources/templates/INDEX.md +0 -0
  217. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/resources/templates/MODWIRE.md +0 -0
  218. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/resources/templates/RULES.md +0 -0
  219. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/resources/templates/TESTING.md +0 -0
  220. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/resources/templates/WORKFLOW.md +0 -0
  221. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/cli/resources/templates/architecture.yaml +0 -0
  222. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/__init__.py +0 -0
  223. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/dependency/__init__.py +0 -0
  224. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/dependency/application.py +0 -0
  225. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/dependency/domain.py +0 -0
  226. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/dependency/services/__init__.py +0 -0
  227. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/dependency/services/import_identity_index.py +0 -0
  228. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/dependency/services/import_resolver.py +0 -0
  229. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/__init__.py +0 -0
  230. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/application.py +0 -0
  231. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/domain.py +0 -0
  232. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/models/__init__.py +0 -0
  233. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/models/batch_config.py +0 -0
  234. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/models/extraction_request.py +0 -0
  235. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/models/extractor_resource.py +0 -0
  236. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/models/extractor_resource_set.py +0 -0
  237. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/models/extractor_runtime.py +0 -0
  238. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/models/python_call_context.py +0 -0
  239. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/resources/__init__.py +0 -0
  240. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/resources/php/build.php +0 -0
  241. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/resources/php/build.py +0 -0
  242. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/resources/php/composer.json +0 -0
  243. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/resources/php/composer.lock +0 -0
  244. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/resources/python/__init__.py +0 -0
  245. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/resources/python/script.py +0 -0
  246. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/resources/typescript/build.mjs +0 -0
  247. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/resources/typescript/tsconfig.json +0 -0
  248. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/services/__init__.py +0 -0
  249. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/extractors/services/python_call_reader.py +0 -0
  250. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/extraction/facade.py +0 -0
  251. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/__init__.py +0 -0
  252. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/facade.py +0 -0
  253. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/__init__.py +0 -0
  254. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/application.py +0 -0
  255. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/contracts/__init__.py +0 -0
  256. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/contracts/manifest_compiler.py +0 -0
  257. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/contracts/manifest_serializer.py +0 -0
  258. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/models/__init__.py +0 -0
  259. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/models/digest_algorithm.py +0 -0
  260. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/models/implementation_manifest_document.py +0 -0
  261. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/models/manifest_annotation.py +0 -0
  262. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/models/manifest_callable.py +0 -0
  263. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/models/manifest_format.py +0 -0
  264. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/models/manifest_parameter.py +0 -0
  265. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/models/manifest_span.py +0 -0
  266. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/models/manifest_symbol.py +0 -0
  267. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/services/__init__.py +0 -0
  268. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/implementation/manifest/services/canonical_json_manifest_serializer.py +0 -0
  269. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/py.typed +0 -0
  270. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/__init__.py +0 -0
  271. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/__init__.py +0 -0
  272. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/application.py +0 -0
  273. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/domain.py +0 -0
  274. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/__init__.py +0 -0
  275. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/capability_coverage.py +0 -0
  276. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/capability_status.py +0 -0
  277. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/code_map_producer.py +0 -0
  278. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/code_package.py +0 -0
  279. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/declaration_family.py +0 -0
  280. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/declaration_identity.py +0 -0
  281. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/dependency_edge_result.py +0 -0
  282. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/dependency_node_result.py +0 -0
  283. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/duplicate_identity_error.py +0 -0
  284. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/edge_resolution.py +0 -0
  285. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/extractor_descriptor.py +0 -0
  286. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/fact_capability.py +0 -0
  287. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/identity.py +0 -0
  288. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/node.py +0 -0
  289. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/query_builder.py +0 -0
  290. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/query_types.py +0 -0
  291. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/queryable_code_map.py +0 -0
  292. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/runtime_observation.py +0 -0
  293. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/scan_policy.py +0 -0
  294. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_abstract_class.py +0 -0
  295. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_artifact.py +0 -0
  296. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_call.py +0 -0
  297. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_callable.py +0 -0
  298. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_callable_symbol.py +0 -0
  299. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_class.py +0 -0
  300. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_class_method.py +0 -0
  301. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_export.py +0 -0
  302. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_extraction.py +0 -0
  303. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_file.py +0 -0
  304. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_file_result.py +0 -0
  305. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_function.py +0 -0
  306. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_import.py +0 -0
  307. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_imported_symbol.py +0 -0
  308. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_interface.py +0 -0
  309. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_item_result.py +0 -0
  310. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_manifest.py +0 -0
  311. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_parameter.py +0 -0
  312. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_signature.py +0 -0
  313. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_type.py +0 -0
  314. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_value.py +0 -0
  315. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/source_value_scope.py +0 -0
  316. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/models/types.py +0 -0
  317. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/services/__init__.py +0 -0
  318. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/services/glob_path_matcher.py +0 -0
  319. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/services/identity_resolver.py +0 -0
  320. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/code/services/installed_package_version.py +0 -0
  321. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/values/__init__.py +0 -0
  322. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/values/models/__init__.py +0 -0
  323. {modwire-9.3.0 → modwire-10.1.0}/src/modwire/shared/values/models/value_model.py +0 -0
  324. {modwire-9.3.0 → modwire-10.1.0}/tests/__init__.py +0 -0
  325. {modwire-9.3.0 → modwire-10.1.0}/tests/application/__init__.py +0 -0
  326. {modwire-9.3.0 → modwire-10.1.0}/tests/application/base_test.py +0 -0
  327. {modwire-9.3.0 → modwire-10.1.0}/tests/application/test_01_attacks.py +0 -0
  328. {modwire-9.3.0 → modwire-10.1.0}/tests/application/test_06_happy_path.py +0 -0
  329. {modwire-9.3.0 → modwire-10.1.0}/tests/application/test_07_cache.py +0 -0
  330. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/__init__.py +0 -0
  331. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/base_test.py +0 -0
  332. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/boundaries/__init__.py +0 -0
  333. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/boundaries/base_test.py +0 -0
  334. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/boundaries/test_01_attacks.py +0 -0
  335. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/boundaries/test_02_invariants.py +0 -0
  336. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/boundaries/test_03_public_api.py +0 -0
  337. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/boundaries/test_04_paths.py +0 -0
  338. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/config/__init__.py +0 -0
  339. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/config/test_01_attacks.py +0 -0
  340. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/config/test_02_invariants.py +0 -0
  341. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/insights/__init__.py +0 -0
  342. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/insights/base_test.py +0 -0
  343. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/insights/test_02_invariants.py +0 -0
  344. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/map/__init__.py +0 -0
  345. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/map/test_02_patterns.py +0 -0
  346. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/report/__init__.py +0 -0
  347. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/report/test_02_invariants.py +0 -0
  348. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/report_benchmark/__init__.py +0 -0
  349. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/report_benchmark/benchmark_process_timeout.py +0 -0
  350. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/report_benchmark/run.py +0 -0
  351. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/shape/__init__.py +0 -0
  352. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/shape/base_test.py +0 -0
  353. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/shape/test_01_limits.py +0 -0
  354. {modwire-9.3.0 → modwire-10.1.0}/tests/architecture/shape/test_02_invariants.py +0 -0
  355. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/__init__.py +0 -0
  356. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/base_test.py +0 -0
  357. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/documentation/__init__.py +0 -0
  358. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/documentation/test_02_invariants.py +0 -0
  359. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/initialization/__init__.py +0 -0
  360. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/initialization/test_01_attacks.py +0 -0
  361. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/initialization/test_02_invariants.py +0 -0
  362. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/initialization/test_03_interruption.py +0 -0
  363. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/initialization/test_04_cleanup.py +0 -0
  364. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/initialization/test_05_recovery.py +0 -0
  365. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/pipeline/__init__.py +0 -0
  366. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/pipeline/base_test.py +0 -0
  367. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/pipeline/test_01_attacks.py +0 -0
  368. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/pipeline/test_02_invariants.py +0 -0
  369. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/pipeline/test_03_interruption.py +0 -0
  370. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/pipeline/test_04_command_transport.py +0 -0
  371. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/pipeline/test_05_recovery.py +0 -0
  372. {modwire-9.3.0 → modwire-10.1.0}/tests/cli/pipeline/test_06_happy_path.py +0 -0
  373. {modwire-9.3.0 → modwire-10.1.0}/tests/conftest.py +0 -0
  374. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/__init__.py +0 -0
  375. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/base_test.py +0 -0
  376. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/big_projects/__init__.py +0 -0
  377. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/big_projects/project.py +0 -0
  378. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/big_projects/projects.json +0 -0
  379. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/big_projects/resolution_results.json +0 -0
  380. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/big_projects/results.json +0 -0
  381. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/big_projects/run.py +0 -0
  382. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/cache_benchmark/__init__.py +0 -0
  383. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/cache_benchmark/benchmark_process_timeout.py +0 -0
  384. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/cache_benchmark/run.py +0 -0
  385. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/dependency/__init__.py +0 -0
  386. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/extractors/__init__.py +0 -0
  387. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/extractors/test_01_attacks.py +0 -0
  388. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/extractors/test_02_invariants.py +0 -0
  389. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/extractors/test_03_native_symbols.py +0 -0
  390. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/scan_benchmark/__init__.py +0 -0
  391. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/scan_benchmark/prepare.py +0 -0
  392. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/scan_benchmark/results.json +0 -0
  393. {modwire-9.3.0 → modwire-10.1.0}/tests/extraction/scan_benchmark/run.py +0 -0
  394. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/php/ignored/example_generated.php +0 -0
  395. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/php/src/example_application/example_actions/example_action.php +0 -0
  396. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/php/src/example_domain/example_model/example_record.php +0 -0
  397. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/php/src/example_domain/example_services/example_policy.php +0 -0
  398. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/php/src/example_interfaces/example_http/example_controller.php +0 -0
  399. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/python/ignored/example_generated.py +0 -0
  400. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/python/src/example_application/example_actions/example_action.py +0 -0
  401. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/python/src/example_domain/example_model/example_record.py +0 -0
  402. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/python/src/example_domain/example_services/example_policy.py +0 -0
  403. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/python/src/example_interfaces/example_http/example_controller.py +0 -0
  404. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/typescript/ignored/example_generated.ts +0 -0
  405. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/typescript/src/example_application/example_actions/example_action.ts +0 -0
  406. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/typescript/src/example_domain/example_model/example_record.ts +0 -0
  407. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/typescript/src/example_domain/example_model/example_view.tsx +0 -0
  408. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_audit.js +0 -0
  409. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_callables.ts +0 -0
  410. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_policy.ts +0 -0
  411. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/typescript/src/example_interfaces/example_http/example_controller.ts +0 -0
  412. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/languages/typescript/src/example_interfaces/example_http/example_view.jsx +0 -0
  413. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/syntax/php/example_shapes.php +0 -0
  414. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/syntax/python/example_shapes.py +0 -0
  415. {modwire-9.3.0 → modwire-10.1.0}/tests/fixtures/syntax/typescript/example_shapes.ts +0 -0
  416. {modwire-9.3.0 → modwire-10.1.0}/tests/shared/__init__.py +0 -0
  417. {modwire-9.3.0 → modwire-10.1.0}/tests/shared/code/__init__.py +0 -0
  418. {modwire-9.3.0 → modwire-10.1.0}/tests/support/__init__.py +0 -0
  419. {modwire-9.3.0 → modwire-10.1.0}/tests/support/base_test.py +0 -0
  420. {modwire-9.3.0 → modwire-10.1.0}/tests/support/service_test.py +0 -0
  421. {modwire-9.3.0 → modwire-10.1.0}/uv.lock +0 -0
@@ -291,7 +291,10 @@ 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_manifest_identity.py
295
+ src/modwire/shared/code/models/source_member_kind.py
294
296
  src/modwire/shared/code/models/source_parameter.py
297
+ src/modwire/shared/code/models/source_relation_kind.py
295
298
  src/modwire/shared/code/models/source_signature.py
296
299
  src/modwire/shared/code/models/source_symbol.py
297
300
  src/modwire/shared/code/models/source_type.py
@@ -313,6 +316,7 @@ tests/application/test_01_attacks.py
313
316
  tests/application/test_06_happy_path.py
314
317
  tests/application/test_07_cache.py
315
318
  tests/application/test_08_implementation_manifest.py
319
+ tests/application/test_09_source_manifest_identity.py
316
320
  tests/architecture/__init__.py
317
321
  tests/architecture/base_test.py
318
322
  tests/architecture/boundaries/__init__.py
@@ -33,4 +33,7 @@ jobs:
33
33
  runs-on: ubuntu-latest
34
34
  steps:
35
35
  - uses: actions/checkout@v6
36
+ - uses: actions/setup-node@v6
37
+ with:
38
+ node-version: "20"
36
39
  - run: make extractor-check
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modwire
3
- Version: 9.3.0
3
+ Version: 10.1.0
4
4
  Summary: Code extraction, architecture analysis and the Modwire CLI.
5
5
  Author: Tomasz Szpak
6
6
  License-Expression: MIT
@@ -88,6 +88,10 @@ Return a queryable code map with content-addressed persistent reuse.
88
88
 
89
89
  Return a queryable code map and public outcomes for every applicable cache stage.
90
90
 
91
+ ### `source_manifest_identity`
92
+
93
+ Observe the current canonical source-manifest identity without parsing source.
94
+
91
95
  ### `implementation_manifest`
92
96
 
93
97
  Publish a deterministic, provenance-bearing implementation manifest.
@@ -154,6 +158,18 @@ Generic persistent-cache settings supplied by a caller.
154
158
 
155
159
  Caller-owned filesystem traversal policy with explicit exclusions and opt-in symlink following.
156
160
 
161
+ ## `SourceManifestIdentity`
162
+
163
+ Canonical identity of one observed source manifest.
164
+
165
+ ## `SourceMemberKind`
166
+
167
+ Ownership kind for a declared class or type member.
168
+
169
+ ## `SourceRelationKind`
170
+
171
+ Canonical relation kinds published by code maps and implementation manifests.
172
+
157
173
  ## `ImplementationManifest`
158
174
 
159
175
  A versioned, language-neutral statement of observed implementation facts and provenance.
@@ -60,6 +60,10 @@ Return a queryable code map with content-addressed persistent reuse.
60
60
 
61
61
  Return a queryable code map and public outcomes for every applicable cache stage.
62
62
 
63
+ ### `source_manifest_identity`
64
+
65
+ Observe the current canonical source-manifest identity without parsing source.
66
+
63
67
  ### `implementation_manifest`
64
68
 
65
69
  Publish a deterministic, provenance-bearing implementation manifest.
@@ -126,6 +130,18 @@ Generic persistent-cache settings supplied by a caller.
126
130
 
127
131
  Caller-owned filesystem traversal policy with explicit exclusions and opt-in symlink following.
128
132
 
133
+ ## `SourceManifestIdentity`
134
+
135
+ Canonical identity of one observed source manifest.
136
+
137
+ ## `SourceMemberKind`
138
+
139
+ Ownership kind for a declared class or type member.
140
+
141
+ ## `SourceRelationKind`
142
+
143
+ Canonical relation kinds published by code maps and implementation manifests.
144
+
129
145
  ## `ImplementationManifest`
130
146
 
131
147
  A versioned, language-neutral statement of observed implementation facts and provenance.
@@ -29,6 +29,9 @@ 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_manifest_identity import SourceManifestIdentity
33
+ from .shared.code.models.source_member_kind import SourceMemberKind
34
+ from .shared.code.models.source_relation_kind import SourceRelationKind
32
35
 
33
36
  __all__ = [
34
37
  "CacheOptions",
@@ -48,6 +51,9 @@ __all__ = [
48
51
  "ModwireApplication",
49
52
  "QueryableCodeMap",
50
53
  "ScanPolicy",
54
+ "SourceMemberKind",
55
+ "SourceManifestIdentity",
56
+ "SourceRelationKind",
51
57
  ]
52
58
 
53
59
 
@@ -185,6 +191,12 @@ class ModwireApplication:
185
191
  cached = self.generate_map_cached_with_diagnostics(language, root, policy, options)
186
192
  return CachedResult(value=QueryableCodeMap(code_map=cached.value), outcomes=cached.outcomes)
187
193
 
194
+ def source_manifest_identity(self, language: str, root: str, policy: ScanPolicy) -> SourceManifestIdentity:
195
+ """Observe the current canonical source-manifest identity without parsing source."""
196
+
197
+ request = self.extraction.request(language, str(root))
198
+ return self.cli.source_manifest_identity(request, policy)
199
+
188
200
  def implementation_manifest(self, code_map: CodeMap, format: ManifestFormat) -> ImplementationManifestDocument:
189
201
  """Publish a deterministic, provenance-bearing implementation manifest."""
190
202
 
@@ -227,6 +239,9 @@ class ModwireApplication:
227
239
  CachedResult,
228
240
  CacheOptions,
229
241
  ScanPolicy,
242
+ SourceManifestIdentity,
243
+ SourceMemberKind,
244
+ SourceRelationKind,
230
245
  ImplementationManifest,
231
246
  ImplementationManifestDocument,
232
247
  ManifestFormat,
@@ -13,6 +13,7 @@ from ..shared.code.models.code_map import CodeMap
13
13
  from ..shared.code.models.queryable_code_map import QueryableCodeMap
14
14
  from ..shared.code.models.scan_policy import ScanPolicy
15
15
  from ..shared.code.models.source_extraction import SourceExtraction
16
+ from ..shared.code.models.source_manifest_identity import SourceManifestIdentity
16
17
  from .cache.application import CacheApplication
17
18
  from .cache.models.cache_options import CacheOptions
18
19
  from .cache.models.cache_plan import CachePlan
@@ -49,6 +50,9 @@ class CliFacade:
49
50
  def extract(self, request: ExtractionRequest, policy: ScanPolicy) -> SourceExtraction:
50
51
  return self.pipeline.extract(request, policy)
51
52
 
53
+ def source_manifest_identity(self, request: ExtractionRequest, policy: ScanPolicy) -> SourceManifestIdentity:
54
+ return self.pipeline.source_manifest_identity(request, policy)
55
+
52
56
  def has_source_files(self, request: ExtractionRequest, policy: ScanPolicy) -> bool:
53
57
  return self.pipeline.has_source_files(request, policy)
54
58
 
@@ -9,6 +9,7 @@ from ...architecture.report.models.report_node import ReportNode
9
9
  from ...extraction.extractors.models.extraction_request import ExtractionRequest
10
10
  from ...shared.code.models.scan_policy import ScanPolicy
11
11
  from ...shared.code.models.source_extraction import SourceExtraction
12
+ from ...shared.code.models.source_manifest_identity import SourceManifestIdentity
12
13
  from .domain import ReportPipelineStep, SourceReader
13
14
  from .models.command_request import CommandRequest
14
15
  from .models.extractor_command_input import ExtractorCommandInput
@@ -37,6 +38,14 @@ class PipelineApplication:
37
38
  self.reader.ensure_available(request.runtime)
38
39
  return self.reader.extract_source(request, policy)
39
40
 
41
+ def source_manifest_identity(self, request: ExtractionRequest, policy: ScanPolicy) -> SourceManifestIdentity:
42
+ self.reader.ensure_available(request.runtime)
43
+ manifest = self.reader.inventory(request, policy).manifest
44
+ return SourceManifestIdentity(
45
+ digest_algorithm=manifest.digest_algorithm,
46
+ digest=manifest.digest,
47
+ )
48
+
40
49
  def has_source_files(self, request: ExtractionRequest, policy: ScanPolicy) -> bool:
41
50
  self.reader.ensure_available(request.runtime)
42
51
  return self.reader.has_source_files(request, policy)
@@ -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.normalized_path,
22
+ specifier=imported_reference.path,
23
23
  resolution=imported_reference.resolution,
24
24
  )
25
25
  return graph
@@ -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' => $param->type instanceof Node ? node_name($param->type) : '',
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 collect_imports(array $nodes): array {
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 ? node_name($node->prefix) . '\\' : '';
404
+ $prefix = $node instanceof Stmt\GroupUse ? source_text($node->prefix, $content) . '\\' : '';
337
405
  foreach ($node->uses as $use) {
338
- $path = trim($prefix . node_name($use->name), '\\');
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'],
@@ -12,7 +12,7 @@ class BuildAdapter:
12
12
  shutil.copytree(source, work, ignore=shutil.ignore_patterns("build.py", "__pycache__"))
13
13
  environment = dict(os.environ)
14
14
  environment["npm_config_cache"] = str(work.parent.parent / "cache/npm")
15
- BuildAdapter.run(("npm", "ci"), cwd=work, environment=environment)
15
+ BuildAdapter.run(("npm", "ci", "--engine-strict"), cwd=work, environment=environment)
16
16
  BuildAdapter.run(("npm", "run", "check"), cwd=work, environment=environment)
17
17
  BuildAdapter.run(("npm", "run", "build"), cwd=work, environment=environment)
18
18
  if (work / "script.js").read_bytes() != (source / "script.js").read_bytes():
@@ -11,6 +11,9 @@
11
11
  "devDependencies": {
12
12
  "@types/node": "^24.0.7",
13
13
  "@vercel/ncc": "^0.38.3"
14
+ },
15
+ "engines": {
16
+ "node": "20 || >=22"
14
17
  }
15
18
  },
16
19
  "node_modules/@nodelib/fs.scandir": {
@@ -89,15 +92,15 @@
89
92
  }
90
93
  },
91
94
  "node_modules/brace-expansion": {
92
- "version": "5.0.7",
93
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz",
94
- "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==",
95
+ "version": "5.0.12",
96
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz",
97
+ "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==",
95
98
  "license": "MIT",
96
99
  "dependencies": {
97
100
  "balanced-match": "^4.0.2"
98
101
  },
99
102
  "engines": {
100
- "node": "18 || 20 || >=22"
103
+ "node": "20 || >=22"
101
104
  }
102
105
  },
103
106
  "node_modules/braces": {
@@ -1,6 +1,9 @@
1
1
  {
2
2
  "private": true,
3
3
  "type": "commonjs",
4
+ "engines": {
5
+ "node": "20 || >=22"
6
+ },
4
7
  "scripts": {
5
8
  "build": "node build.mjs",
6
9
  "check": "tsc --noEmit"