modwire 10.1.0__tar.gz → 11.0.0__tar.gz

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